/*
Copyright (C) 2008 raohmaru <http://www.raohmaru.com>

This file is part of Raohmaru AS3 Framework.

Raohmaru AS3 Framework is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Raohmaru AS3 Framework is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with Raohmaru AS3 Framework.  If not, see <http://www.gnu.org/licenses/>.
*/

package jp.raohmaru.system.gui 
{
import flash.display.*;
import flash.events.Event;

/**
 * La clase GUI comprende un conjunto de utilidades que extienden las funcionalidades de un objeto MovieClip.
 * Un objeto GUI debe considerarse como un elemento de la interfaz de usuario.
 * Aunque puede ser instanciada, el objetivo de esta clase es ser heredada y vinculada a un clip de la biblioteca, actuando como una clase abstracta.
 * @author raohmaru
 * @version 1.0.1
 */
public class LinkedGUI extends MovieClip implements GUI
{
	/**
	 * Obtiene una referencia al objeto DisplayObject interno.
	 * Para compatibilidad sólo.
	 * @private
	 */
	public function get __movie__() : MovieClip
	{
		return this;
	}
	
	
	
	/**
	 * Crea una nueva instancia de GUI.
	 */
	public function LinkedGUI()
	{		
		addEventListener(Event.REMOVED_FROM_STAGE, onRemove);
		
		init();
	}
	
	/**
	 * @inheritDoc
	 */
	public function init() : void
	{
		
	}
	
	/**
	 * Se invoca cuando el objeto de visualización se va a eliminar de la lista de visualización, bien directamente o a través de la eliminación
	 * de un subárbol que contiene el objeto de visualización.
	 * @see flash.display.DisplayObject#removedFromStage
	 */
	protected function onRemove(e : Event) : void
	{
		removeEventListener(Event.REMOVED_FROM_STAGE, onRemove);
	}
}
}